//
//  HotWordView.m
//  SearchBarTest
//
//  Created by 蓝布鲁 on 2017/3/21.
//  Copyright © 2017年 蓝布鲁. All rights reserved.
//

#import "HotWordView.h"

@interface HotWordView ()

@property (nonatomic,retain)NSMutableArray *labelArray;         // label数组
@property (nonatomic,copy)HotWordCallBack callBack;           // 回调方法

@end

CGFloat outLabelMargin = 10;                                    // label与label之间的间隔
CGFloat inLabelMargin = 15;                                     // label内多留的空间

@implementation HotWordView


-(void)updateView{
    // 重新初始化label
    self.labelArray = [[NSMutableArray alloc] init];
    
    // 初始化数据
    NSInteger rows = 0;
    NSInteger columns = 0;
    
    for (NSString *title in self.titleArray) {
        // 1.获取字符串长度
        CGFloat length = [title widthWithFont:[UIFont systemFontOfSize:15]] + inLabelMargin;
        
        // 2.计算字符串位置
        // 2.1取出最后一个label
        UILabel *lastLabel = [self.labelArray lastObject];
        
        // 2.2判断是否在一行开始:如果不在一行开始,判断是否在这一行放得下;如果在一行开始,则直接放置
        if (columns != 0) {
            // 2.2.1不在一行开始,判断是否在这一行放得下:如果超过了屏幕宽度,则放在下一行中,如果没有超过则直接放置
            if (lastLabel != nil && lastLabel.rightX + outLabelMargin + length + outLabelMargin > SCREEN_WIDTH) {
                // 2.2.2如果超过了屏幕宽度,则放在下一行中
                rows++;
                columns = 0;
            }
        }
        // 2.3label的行列已经确定,计算坐标
        CGFloat x = 0;
        CGFloat y = 0;
        CGFloat w = length;
        CGFloat h = 25;
        // 2.3.1 判断是否在一行开始:如果在一行开始,则x=margin;如果不是,则x = 最后一个label.rightX + margin
        if (columns == 0) {
            // 2.3.1.1 如果在一行开始,则x=margin
            x = outLabelMargin;
        }else{
            // 2.3.1.2如果不是,则x = 最后一个label.rightX + margin
            x = lastLabel.rightX + outLabelMargin;
        }
        // 2.3.2 y = 行数 * (间隔 + label高度) + 间隔
        y = rows * (outLabelMargin + h) + outLabelMargin;
        
        // 2.3.3 设置label最大宽度
        w = w > SCREEN_WIDTH - 2 * outLabelMargin ? SCREEN_WIDTH - 2 * outLabelMargin : w;
        
        // 2.4 增加坐标,为下一个label准备
        columns++;
        
        
        // 3.创建label对象
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(x, y, w, h)];
        label.text = title;
        label.backgroundColor = [UIColor lightGrayColor];
        label.font = [UIFont systemFontOfSize:15];
        label.textAlignment = NSTextAlignmentCenter;
        
        // 3.1添加圆角
        label.layer.masksToBounds = true;
        label.layer.cornerRadius = 8;
        
        // 3.2添加点击事件
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTapped:)];
        [label addGestureRecognizer:tap];
        label.userInteractionEnabled = true;
        
        [self.labelArray addObject:label];
        [self addSubview:label];
    }
    // 更改HotWorldView的fram
    UILabel *lastLabel = self.labelArray.lastObject;
    CGRect frame = self.frame;
    frame.size.height = lastLabel.bottomY + outLabelMargin;
    self.frame = frame;
}

-(void)labelTapped:(UITapGestureRecognizer *)sender {
    UILabel *label = (UILabel *)sender.view;
    self.callBack(label.text);
}

-(void)hotWorldTapped:(HotWordCallBack) callBack {
    // 保存callBack
    self.callBack = callBack;
}

@end
